/*
** Copyright (C) 2011 Viens Yann
**
** This program is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

#ifndef SCORELOADER_HPP_
# define SCORELOADER_HPP_

#include <map>
#include <list>
#include <string>
#include <QXmlDefaultHandler>

class		ScoreLoader: public QXmlDefaultHandler
{
	typedef void (ScoreLoader::*loaderMember)(const QString&);

public:
	ScoreLoader();
	bool			startElement(const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& attribs);
	bool			endElement(const QString& namespaceURI, const QString& localName, const QString& qName);
	bool			characters(const QString &str);
	bool			fatalError(const QXmlParseException &e);

	void 			loadNickName(QString const& nickName);
	void			loadScore(QString const& score);
	std::list<std::pair<std::string, int> >			getScores();

private:
	std::list<std::pair<std::string, int> >			_score;
	std::map<std::string, loaderMember>				_filler;
	loaderMember									_nextToCall;
	std::pair<std::string, int>						_currentItem;
};

#endif // !SCORELOADER_HPP_